package com.lin.cloud.disk.service;

import com.lin.cloud.disk.entity.pojo.User;
import com.lin.cloud.disk.entity.request.*;
import com.lin.cloud.disk.entity.response.UserInfoResponse;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author ljc
 * @since 2020-12-10 16:48:58
 */
public interface IUserService {

    /**
     * 通过账号密码获取用户登录信息
     * @param loginRequest
     * @return
     */
    User getUserByUserNameAndPassword(LoginRequest loginRequest);

    /**
     * 更新用户
     * @param user
     */
    void update(User user);

    /**
     * 添加用户
     * @param user
     */
    void insert(User user);

    /**
     * 修改个人信息
     * @param request
     */
    void modifyUserInfo(ModifyUserInfoRequest request);


    /**
     * 获取部门用户数据
     * @param userIdList
     * @return
     */
    List<UserInfoResponse> getDepartmentUserInfoByUserIdList(List<Long> userIdList);

    /**
     * userIdList中的用户
     * @param userIdList
     * @param companyId
     * @return
     */
    List<UserInfoResponse> getDepartmentUserInfoUserIdList(List<Long> userIdList, Long companyId);

    /**
     * 统计数量用户
     * @param request
     * @return
     */
    Integer countUserSize(CountTotalSizeRequest request);

    /**
     * 获取用户详情列表
     * @param request
     * @return
     */
    List<UserInfoResponse> getUserInfoList(GetUserInfoListRequest request);

    /**
     * 通过ID列表删除用户
     * @param request
     */
    void deleteUserByIdList(DeleteUserByIdListRequest request);

    /**
     * 检查用户名
     * @param userName
     */
    Boolean isContainUserName(String userName);

    /**
     * 获取公司内所有的用户ID
     * @param companyId
     * @return
     */
    List<Long> findUserIdListByCompanyId(Long companyId);
}